import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

// 通用页面：不需要守卫，可直接访问
export const constRoutes = [
    {
        path: '/login',
        component: () => import(/* webpackChunkName: "login" */ '../components/page/Login.vue'),
        meta: { title: '登录' }
    },
    {
        path: '/',
        redirect: '/login'
    }
];

// 权限页面：受保护的页面，要求用户登录并拥有访问权限的角色才能访问
export const asyncRoutes = [
    {
        path: '/',
        component: () => import(/* webpackChunkName: "home" */ '../components/common/Home.vue'),
        meta: {
            title: '自述文件',
            roles: ['admin']
        },
        children: [
            {
                path: '/dashboard',
                component: () => import(/* webpackChunkName: "dashboard" */ '../components/page/Dashboard.vue'),
                meta: {
                    title: '系统首页',
                    roles: ['admin']
                }
            },
            {
                path: '/icon',
                component: () => import(/* webpackChunkName: "icon" */ '../components/page/Icon.vue'),
                meta: {
                    title: '自定义图标',
                    roles: ['admin']
                }
            },
            {
                path: '/table',
                component: () => import(/* webpackChunkName: "table" */ '../components/page/BaseTable.vue'),
                meta: {
                    title: '基础表格',
                    roles: ['admin']
                }
            },
            {
                path: '/tabs',
                component: () => import(/* webpackChunkName: "tabs" */ '../components/page/Tabs.vue'),
                meta: {
                    title: 'tab选项卡',
                    roles: ['admin']
                }
            },
            {
                path: '/form',
                component: () => import(/* webpackChunkName: "form" */ '../components/page/BaseForm.vue'),
                meta: {
                    title: '基本表单',
                    roles: ['admin']
                }
            },
            {
                // 富文本编辑器组件
                path: '/editor',
                component: () => import(/* webpackChunkName: "editor" */ '../components/page/VueEditor.vue'),
                meta: {
                    title: '富文本编辑器',
                    roles: ['admin']
                }
            },
            {
                // markdown组件
                path: '/markdown',
                component: () => import(/* webpackChunkName: "markdown" */ '../components/page/Markdown.vue'),
                meta: {
                    title: 'markdown编辑器',
                    roles: ['admin']
                }
            },
            {
                // 图片上传组件
                path: '/upload',
                component: () => import(/* webpackChunkName: "upload" */ '../components/page/Upload.vue'),
                meta: {
                    title: '文件上传',
                    roles: ['admin']
                }
            },
            {
                // vue-schart组件
                path: '/charts',
                component: () => import(/* webpackChunkName: "chart" */ '../components/page/BaseCharts.vue'),
                meta: {
                    title: 'schart图表',
                    roles: ['admin']
                }
            },
            {
                // 拖拽列表组件
                path: '/drag',
                component: () => import(/* webpackChunkName: "drag" */ '../components/page/DragList.vue'),
                meta: {
                    title: '拖拽列表',
                    roles: ['admin']
                }
            },
            {
                // 拖拽Dialog组件
                path: '/dialog',
                component: () => import(/* webpackChunkName: "dragdialog" */ '../components/page/DragDialog.vue'),
                meta: {
                    title: '拖拽弹框',
                    roles: ['admin']
                }
            },
            {
                // 国际化组件
                path: '/i18n',
                component: () => import(/* webpackChunkName: "i18n" */ '../components/page/I18n.vue'),
                meta: {
                    title: '国际化',
                    roles: ['admin']
                }
            },
            {
                // 权限页面
                path: '/permission',
                component: () => import(/* webpackChunkName: "permission" */ '../components/page/Permission.vue'),
                meta: {
                    title: '权限测试',
                    permission: true,
                    roles: ['admin']
                }
            },
            {
                path: '/404',
                component: () => import(/* webpackChunkName: "404" */ '../components/page/404.vue'),
                meta: {
                    title: '404',
                    roles: ['admin']
                }
            },
            {
                path: '/403',
                component: () => import(/* webpackChunkName: "403" */ '../components/page/403.vue'),
                meta: {
                    title: '403',
                    roles: ['admin']
                }
            },
            {
                path: '/donate',
                component: () => import(/* webpackChunkName: "donate" */ '../components/page/Donate.vue'),
                meta: {
                    title: '支持作者',
                    roles: ['admin']
                }
            }
        ]
    },

    {
        path: '*',
        redirect: '/404',
        meta: {
            title: '404',
            roles: ['admin']
        }
    }
];

export default new Router({
    mode: 'history',
    routes: constRoutes
});
